package dao;

import dto.UserDTO;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import logic.Turno;
import logic.User;

/**
 *
 * @author lucifer
 */
// NO EJECUTAR EL main() DE ESTA CLASE. SE USA PARA TESTING.
class GeneradorTurnosLibresFake {

  public static void main(String[] args) {
    try {
      for (int i = 1; i <= 12; i++) {
        logic.Turno.GenerarTurnosLibres(i, java.time.LocalDateTime.parse("2014-05-01T00:00"), java.time.LocalDateTime.parse("2014-08-31T00:00"), 20);
      }

      Random r = new Random();
      Turno t;
      int pdice = PacienteDAO.createDAO().LastID();
      ArrayList<UserDTO> users = User.All();
      ArrayList<Integer> secretarias = new ArrayList<>();
      for (UserDTO u : users) {
        if (u.getGid() == 1) {
          secretarias.add(u.getId());
        }
      }
      int dice;
      int last = TurnoDAO.createDAO().LastID();
      for (int i = 1; i <= last; i++) {
        t = new Turno(Turno.SearchByID(i));
        t.AsignarTurnoToPacienteWithUserLog(r.nextInt(pdice) + 1, secretarias.get(r.nextInt(secretarias.size())));
        if (t.isSobreturno()) {
          continue;
        }
        if ((dice = r.nextInt(6)) == 0) {
          t.AnularTurno();
        } else if (dice == 1) {
          t.LiberarTurno();
        } else if (dice == 2) {
          //t.RegistrarAusencia();
        } else if (dice == 3) {
          try {
            t.RegistrarAsistencia();
          } catch (Exception e) {
          }
        }
      }

      int lastSobreturno = TurnoDAO.createDAO().LastID();
      for (int i = last + 1; i <= lastSobreturno; i++) {
        t = new Turno(Turno.SearchByID(i));
        if ((dice = r.nextInt(6)) == 0) {
          t.AnularTurno();
        } else if (dice == 1) {
          //t.RegistrarAusencia();
        } else if (dice == 2) {
          try {
            t.RegistrarAsistencia();
          } catch (Exception e) {
          }
        }
      }

    } catch (SQLException ex) {
      Logger.getLogger(logic.Turno.class.getName()).log(Level.SEVERE, null, ex);
    }
  }

}
